package ar.com.fiuba.ElectronicCircuitAnalyst.domain.api;

import ar.com.fiuba.ElectronicCircuitAnalyst.application.api.dto.CircuitDto;
import ar.com.fiuba.ElectronicCircuitAnalyst.domain.exceptions.InvalidCircuitElementException;

/**
 * Interface for a circuit factory.
 * 
 */
public interface CircuitFactory {

	/**
	 * Method to make a Circuit with the parameters provided.
	 * 
	 * @param data
	 *            DTO holding the information to create a Circuit.
	 * @return the new instance.
	 * @throws InvalidCircuitElementException
	 *             if parameters provided result in an invalid circuit.
	 */
	public Circuit makeCircuit(CircuitDto data) throws InvalidCircuitElementException;

}
